import { Int_64 } from "../../src/primitives_64";

export const NISTCSHAKERoundIn = [
  0x0001a801,
  0x6d457801,
  0x206c6961,
  0x6e676953,
  0x72757461,
  0x65,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
];

export const CSHAKEWithFuncRoundIn = [
  0x2001a801,
  0x54534554,
  1,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
];

export const NISTKMACCustomizationRound1In = [
  0x2001a801,
  0x43414d4b,
  0x794da801,
  0x67615420,
  0x20646567,
  0x6c707041,
  0x74616369,
  0x006e6f69,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
];

export const NISTKMACCustomizationRound2In = [
  0x0102a801,
  0x42414000,
  0x46454443,
  0x4a494847,
  0x4e4d4c4b,
  0x5251504f,
  0x56555453,
  0x5a595857,
  0x5e5d5c5b,
  0x5f,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
];

export const newState = [
  [new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0)],
  [new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0)],
  [new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0)],
  [new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0)],
  [new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0), new Int_64(0, 0)],
];

export const NISTSHA3Round1In = [
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
];

export const NISTSHA3Round1Out = [
  [
    new Int_64(0xeb978426 | 0, 0x96183af8 | 0),
    new Int_64(0x9d496fc8 | 0, 0x38c484c1),
    new Int_64(0x2a88a8d6, 0xa2b58c95 | 0),
    new Int_64(0x696b56da, 0xd2a21e12 | 0),
    new Int_64(0x61e6c4b1, 0x36f037af),
  ],
  [
    new Int_64(0x69a545c5, 0xbcd98904 | 0),
    new Int_64(0xb3c1a6ee | 0, 0xf70e64ca | 0),
    new Int_64(0x2bc5a576, 0x8e4b031e | 0),
    new Int_64(0x00160fd1, 0x39b25ea3),
    new Int_64(0xe110f5f3 | 0, 0x7c21ee03),
  ],
  [
    new Int_64(0x051ab172, 0xefec2a11 | 0),
    new Int_64(0x0717aa80, 0x6b76f423),
    new Int_64(0x40bc4708, 0x962c33af | 0),
    new Int_64(0x753c893b, 0x1ba1073f),
    new Int_64(0xca2f0e49 | 0, 0x94d2b5c7 | 0),
  ],
  [
    new Int_64(0xd0e7a0d3 | 0, 0x0198e5f0),
    new Int_64(0x4ba97add, 0x188b278d),
    new Int_64(0xaad7b3e2 | 0, 0xc495a09f | 0),
    new Int_64(0x98cab7f5 | 0, 0xb03706c6 | 0),
    new Int_64(0x1ffbf969, 0xd632bdcc | 0),
  ],
  [
    new Int_64(0xe929d594 | 0, 0xe5b1f575 | 0),
    new Int_64(0xcff5e41b | 0, 0x8cb02d2e | 0),
    new Int_64(0x72e2e510, 0x135deb94),
    new Int_64(0x90486e90 | 0, 0x8cdee9e9 | 0),
    new Int_64(0x85f8d46e | 0, 0x7687cf97),
  ],
];

export const NISTSHA3Round2In = [
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
  0xa3a3a3a3,
];

export const NISTSHA3Round2Out = [
  [
    new Int_64(0x723f50ba, 0x6a817693),
    new Int_64(0xec5df904, 0x614aa708),
    new Int_64(0x197049b8, 0xdda189c8),
    new Int_64(0x3bd506da, 0x39e7d35a),
    new Int_64(0xad0d6399, 0x1dc79bfe),
  ],
  [
    new Int_64(0x5d09ac65, 0xebe76cf9),
    new Int_64(0xce8c4fd8, 0x506905f9),
    new Int_64(0x67fe1d38, 0x84929d0b),
    new Int_64(0x9a67ce20, 0x6438317f),
    new Int_64(0x5a1232fd, 0x93c86c97),
  ],
  [
    new Int_64(0xa1c2bbf9, 0x4bbee3ee),
    new Int_64(0x9016c3b5, 0x88af0041),
    new Int_64(0x2f107593, 0x10e5edff),
    new Int_64(0x53107e48, 0x638bf9b3),
    new Int_64(0x3d84dd91, 0xcb47f40b),
  ],
  [
    new Int_64(0x72720881, 0xe0117ecb),
    new Int_64(0xbcb431cb, 0x0c60de63),
    new Int_64(0x6f594cfb, 0x0edbd537),
    new Int_64(0x81969e6b, 0xbcca9a95),
    new Int_64(0x85dbad55, 0x27a83a08),
  ],
  [
    new Int_64(0x4c65a078, 0x55cbc1cd),
    new Int_64(0x3feeaaa3, 0x78ff4346),
    new Int_64(0x153781f4, 0xc1b855bf),
    new Int_64(0x046b7838, 0x59f40378),
    new Int_64(0x41877fc5, 0xaaf62005),
  ],
];

export const SHAKE128Len2048Out = [
  0xd2b81a13 | 0,
  0x6b9494b5,
  0x3f33819c,
  0xcee0b69b | 0,
  0x31b9c375,
  0x6934fa04,
  0x577491d3,
  0x37a05d38,
  0xf72e23cf | 0,
  0x1e6d4a16,
  0x90c848b4 | 0,
  0x85ad8681 | 0,
  0xa5853f2d | 0,
  0x1ada28cf,
  0x3834feb6,
  0x46781917,
  0xd5051c7f | 0,
  0x8cf37e8c | 0,
  0xf6414c28 | 0,
  0x761a22c2,
  0xc0b12af1 | 0,
  0x02668240,
  0x94228050 | 0,
  0x021887fb,
  0x5beffd13,
  0xf57dcb0e | 0,
  0x55f8a10c,
  0x324de15b,
  0xdc6e0fe1 | 0,
  0x092c89de,
  0xf5294b42 | 0,
  0x70c2af97,
  0x6b5504c9,
  0x7d7ab4fc,
  0x398d7740,
  0x2b642309,
  0x7905bd3c,
  0xd50809e6 | 0,
  0xd0c100a0 | 0,
  0x93ef988b | 0,
  0x4564803f,
  0xb0f887bf | 0,
  0x949eba09 | 0,
  0x226126f7,
  0x4ec27aed,
  0x426c265e,
  0xbba12fa8 | 0,
  0xdbb8b7ef | 0,
  0x6ae16600,
  0x3f49e085,
  0x0948df07,
  0xa584c0ae | 0,
  0xc38a7493 | 0,
  0xd7a6e5dd | 0,
  0xb6e8e1aa | 0,
  0x2d2b35e5,
  0x47bbef71,
  0xd5eecad4 | 0,
  0x8033d6e6 | 0,
  0x3e322d5d,
  0x461bd86f,
  0x263ab984,
  0x745ed477,
  0xaec6c221 | 0,
];
